#ifndef FONTUNIT_H
#define FONTUNIT_H

#include <QObject>
#include <QString>
#include <QFont>
#include <QDataStream>
#include "module_global.h"

class MODULE_EXPORT FontUnit : public QObject
{
    Q_OBJECT
public:
    // 获取 FontUnit 单例实例
    static FontUnit &instance(QObject *parent = nullptr);
    // 设置字体名称
    void setFamily(const QString &family);
    QString family() const;

    // 设置字体大小
    void setPointSize(int size);
    int pointSize() const;

    // 设置加粗属性
    void setBold(bool bold);
    bool isBold() const;

    // 设置斜体属性
    void setItalic(bool italic);
    bool isItalic() const;

    // 设置下划线属性
    void setUnderline(bool underline);
    bool isUnderline() const;

    // 获取 QFont 对象
    QFont toFont() const;

    // 通过 QFont 设置所有属性
    void fromFont(const QFont &font);

private:
    // 私有构造函数和析构函数
    FontUnit(const QString &family = "Arial", int pointSize = 10, bool bold = false, bool italic = false, bool underline = false,QObject *parent = nullptr);

    ~FontUnit() = default;

    // 禁止复制构造和赋值
    FontUnit(const FontUnit &) = delete;
    FontUnit &operator=(const FontUnit &) = delete;
private:
    QString fontFamily;  // 字体名称
    int fontPointSize;   // 字体大小
    bool fontBold;       // 加粗
    bool fontItalic;     // 斜体
    bool fontUnderline;  // 下划线
};

#endif // FONTUNIT_H
